Scroll to navigation

virt-p2v(1) Virtualization Support virt-p2v(1)

НАЗВА

virt-p2v — перетворення фізичної машини для використання KVM

КОРОТКИЙ ОПИС

 virt-p2v
 virt-p2v.iso

ОПИС

Virt-p2v перетворює фізичну машину для запуску віртуалізованою у KVM, під керуванням libvirt, OpenStack, oVirt, Red Hat Virtualisation (RHV) або одним із інших призначень, підтримку яких передбачено у virt-v2v(1).

Зазвичай, потреби у безпосередньому запуску програми virt-p2v немає. Замість цього, вам слід завантажити фізичну машину за допомогою придатного до завантаження компакт-диска, ISO або образу PXE. Цей придатний до завантаження образ містить виконуваний файл virt-p2v і запускає його автоматично. Завантаження з компакт-диска або іншого носія є обов'язковим, оскільки диски, які перетворюватимуться, мають бути статичними. Перетворення активної фізичної машини не є безпечним, оскільки під час створення образу інші програми можуть вносити до нього зміни.

Цю сторінку підручника присвячено документуванню використання програми virt-p2v. Щоб створити придатний до завантаження образ, вам слід скористатися virt-p2v-make-disk(1) або virt-p2v-make-kickstart(1).

НАЛАШТОВУВАННЯ МЕРЕЖІ

Virt-p2v працюватиме над фізичною машиною, яку ви хочете перетворити. Програма має обмінюватися даними із іншим сервером, який називається «сервером перетворення» і на якому має бути встановлено virt-v2v(1). Обмін даними із сервером перетворення завжди виконуватиметься за допомогою SSH:

 ┌──────────────┐                  ┌─────────────────┐
 │ virt-p2v     │                  │ virt-v2v        │
 │ (фізичний    │  з'єднання ssh    │ (сервер         │
 │  сервер)   ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶ перетворення)  │
 └──────────────┘                  └─────────────────┘

Програма virt-v2v на сервері перетворення виконає саме перетворення (перетворення машини з фізичної на віртуальну і з віртуальної машини на віртуальну достатньо подібні, щоб використовувати для них обох ту саму програму).

З'єднання SSH завжди ініціюється з фізичного сервера. Усі дані передаються цим з'єднанням SSH. У термінах налаштування брандмауера і мережі, вам слід лише забезпечити доступ до порту (зазвичай, порту TCP 22) для фізичного сервера на серверів перетворення. Зауважте, що під час процесу перетворення фізична машина може повторно встановлювати з'єднання декілька разів.

Для роботи virt-p2v потрібна можливість зворотного переспрямовування портів ssh (тобто працездатність команди "ssh -R"). Програма не працюватиме, якщо цю можливість вимкнено на сервері перетворення. (Для "AllowTcpForwarding" має бути встановлено значення "yes" у файлі sshd_config(5) на сервері перетворення.)

Можливість ssh використовувати scp (безпечне копіювання) є обов'язковою для virt-p2v для надсилання малих файлів (це не той спосіб, у який копіюються диски).

The conversion server does not need to be a physical machine. It could be a virtual machine, as long as it has sufficient memory and disk space to do the conversion, and as long as the physical machine can connect directly to its SSH port. (See also "Resource requirements" in virt-v2v(1)).

Оскільки усі дані на дисках фізичного сервера має бути скопійовано мережею, швидкість перетворення багато у чому визначається швидкість обміну даними мережею між двома машинами.

ІНТЕРАКТИВНЕ НАЛАШТОВУВАННЯ ЗА ДОПОМОГОЮ ГРАФІЧНОГО ІНТЕРФЕЙСУ

Після запуску virt-p2v ви побачите графічне діалогове вікно налаштовування, яке допоможе вам встановити з'єднання із сервером перетворення, запитає про пароль, надасть змогу вказати, які локальні жорсткі диски слід перетворити, та інші речі, зокрема назву гостьової системи, яку слід створити, та кількість віртуальних процесорів, які їй слід надати у користування.

ВІКНО НАЛАШТОВУВАННЯ SSH

Після запуску virt-p2v у режимі графічного інтерфейсу перше діалогове вікно виглядатиме ось так:

 ┌─────────────────────────────────────────────────────────────┐
 │                           virt-p2v                          │
 │                                                             │
 │ Сервер перетворення: [____________________________] : [22___] │
 │                                                             │
 │         Користувач: [root__________________________________] │
 │                                                             │
 │          Пароль:   [______________________________________] │
 │                                                             │
 │  Адреса профілю SSH: [______________________________________] │
 │                                                             │

У зазначених вище полях вам слід вказати параметри сервера перетворення: назву вузла, номер порту SSH, ім'я віддаленого користувача і або пароль або адресу профілю SSH (закритого ключа). На сервері перетворення має бути встановлено достатньо сучасну версію virt-v2v.

Зазвичай, вам доведеться входити до сервера перетворення від імені користувача root, але якщо ви позначите такий пункт:

 │                                                             │
 │         [ ] Використовувати sudo для запуску virt-v2v       │
 │                                                             │

ви зможете увійти до нього від імені іншого користувача, а virt-p2v використовуватиме команду sudo(8) для розширення прав доступу до прав доступу root. Зауважте, що доступ до sudo має здійснюватися без пароля.

Крім того, virt-v2v можна запустити на сервері перетворення повністю без прав доступу root, але режими виведення у цьому випадку може бути обмежено. Зверніться до сторінки підручника virt-v2v(1), щоб дізнатися більше.

У нижній частині діалогового вікна розташовано такі кнопки:

 │                                                             │
 │                  [ Перевірити з'єднання ]                   │
 │                                                             │
 │ [ Налаштувати мережу ] [ XTerm ] [ Про virt-p2v ] [ Далі ] │
 │                                                             │
 └─────────────────────────────────────────────────────────────┘

Спочатку вам слід натиснути кнопку "Перевірити з'єднання", щоб перевірити з'єднання SSH із сервером перетворення. Якщо з'єднання вдасться встановити (тобто ви вказали правильно назву сервера, ім'я користувача, пароль та інші дані, а на віддаленій машині встановлено придатну версію virt-v2v), натисніть кнопку "Далі", щоб перейти до наступного діалогового вікна.

Ви можете скористатися кнопкою "Налаштувати мережу", якщо вам потрібно визначити статичну IP-адресу фізичної машини або скористатися Wifi, прив'язкою або іншими можливостями мережі.

Кнопка "XTerm" відкриває командну оболонку, якою можна скористатися для діагностики, налаштовування мережі вручну тощо.

ДІАЛОГОВЕ ВІКНО НАЛАШТОВУВАННЯ ДИСКА І МЕРЕЖІ

За допомогою другого діалогового вікна налаштувань ви можете налаштувати параметри перетворення, зокрема визначити, що слід перетворити, і те, куди слід надіслати гостьову систему.

У лівому стовпчику, починаючи згори, за допомогою властивостей призначення ви можете вибрати назву гостьової системи (тобто назву системи після перетворення) і скільки віртуальних процесорів та оперативної пам'яті слід надати гостьовій системі. Типові значення визначаються за параметрами фізичної машини, ви, звичайно ж, можете їх не змінювати:

 ┌─────────────────────────────────────── ─ ─ ─ ─
 │ Властивості призначення:
 │
 │        Назва: [hostname______________]
 │
 │     К-ть вірт. процесорів: [4_____________________]
 │
 │ Пам'ять (у МБ): [16384_________________]
 │

Друга панель ліворуч керує параметрами виведення virt-v2v. Для того, щоб краще зрозуміти ці параметри, варто ознайомитися зі сторінкою підручника virt-v2v(1). Ви можете не змінювати типові значення цих параметрів для створення гостьової системи як образу диска і файла XML libvirt, який зберігатиметься у теці /var/tmp на сервері перетворення. Це непоганий варіант, якщо ви є користувачем-початківцем virt-p2v.

 │
 │ Параметри виведення virt-v2v:
 │
 │          Вивести до (-o): [local             ▼]
 │
 │      З'єднання виведення (-oc): [___________________]
 │
 │    Сховище виведення (-os): [/var/tmp___________]
 │
 │     Формат виведення (-of): [___________________]
 │
 │ Розподіл виведення (-oa): [sparse            ▼]
 │

Всі параметри виведення і шляхи вказуються відносно сервера перетворення (не фізичного сервера).

Нарешті, у лівому стовпчику ви знайдете буде наведено інформація щодо версії virt-p2v (на фізичному сервері) та virt-v2v (на сервері перетворення). Вам слід надавати ці дані під час створення звітів щодо вад.

У правому стовпчику розташовано три панелі, які керують тим, які диски, портативні носії даних та мережеві інтерфейси буде створено у отриманій у результаті обробки гостьовій системі. Зазвичай, достатньо використати типові параметри.

 ─ ─ ───────────────────────────────────────┐
     Фіксовані жорсткі диски                       │
                                            │
     Перетворити пристрій                        │
     [✔]      sda                           │
              1024G HITACHI                 │
              s/n 12345                     │
     [✔]      sdb                           │
              119G HITACHI                  │
              s/n 12346                     │
                                            │

Зазвичай, виконується перетворення усіх дисків. Якщо ви хочете, щоб програма virt-p2v повністю проігнорувала локальний диск, зніміть позначку з його пункту. Має бути позначено диск, на якому міститься операційна система. Якщо диск є частиною масиву RAID або групи томів LVM (VG), має бути позначено або усі диски з масиву або групи томів, або жодного диска з масиву або групи томів.

                                            │
     Портативний носій                     │
                                            │
     Перетворити пристрій                  │
     [✔]      sr0                           │
                                            │

Якщо у фізичній машині містяться оптичні диски, ви можете скористатися панеллю «Портативні носії» для створення відповідних дисків у гостьовій системі після перетворення. Зауважте, що усі дані на компакт-дисках так DVD, які було змонтовано, не буде скопійовано.

                                            │
     Інтерфейси мережі                     │
                                            │
     Перетворити пристрій, з'єднаний із... |
     [✔]      em1    [типовий_____________] │
     [ ]      wlp3s0 [типовий_____________] │
                                            │

In the Network interfaces panel, select the network interfaces that should be created in the guest after conversion. You can also connect these to target hypervisor networks (for further information about this feature, see "Networks and bridges" in virt-v2v(1)).

Якщо підтримку відповідної можливості передбачено у обладнанні, клацання лівою кнопкою на назві пристрою (наприклад "em1") призведе до того, що на фізичному інтерфейсі почне блимати лампочка, що надасть змогу оператору ідентифікувати інтерфейс.

Коли будете готові розпочати перетворення, натисніть кнопку "Розпочати перетворення":

                                            │
       [ Назад ]  [ Розпочати перетворення ] │
                                            │
 ─ ─ ───────────────────────────────────────┘

ДІАЛОГОВЕ ВІКНО ПОСТУПУ ПЕРЕТВОРЕННЯ

Протягом процедури перетворення ви бачитимете таке діалогове вікно:

 ┌────────────────────────────────────────────────────────┐
 │                      virt-p2v                          │
 │                                                        │
 │  ┌──────────────────────────────────────────────────┐  │
 │  │                                                 ▲│  │
 │  │                                                  │  │
 │  │                                                  │  │
 ∼  ∼                                                  ∼  ∼
 │  │                                                  │  │
 │  │                                                  │  │
 │  │                                                 ▼│  │
 │  └──────────────────────────────────────────────────┘  │
 │                                                        │
 │ Файли журналу ... до /tmp/virt-p2v-xxx                 │
 │                                                        │
 │ Виконуємо перетворення ...                              │
 │                                                        │
 │                             [ Скасувати перетворення ]  │
 │                                                        │
 └────────────────────────────────────────────────────────┘

У основній області зі смужкою гортання ви побачите повідомлення від процесу virt-v2v.

Під основною областю virt-p2v показуватиме вам каталог на сервері перетворення, який міститиме файли журналу та інші діагностичні дані. Нижче буде показано дані щодо поточного стану та кнопку для скасовування перетворення.

Після завершення перетворення вам слід вимкнути фізичну машину. Якщо перетворення буде успішним, вам уже ніколи не доведеться її перезавантажувати.

НАЛАШТОВУВАННЯ КОМАНДНОГО РЯДКА ЯДРА

Якщо ви не хочете налаштовувати параметри за допомогою графічного інтерфейсу користувача, можете налаштувати їх за допомогою командного рядка ядра. Це особливо зручно, якщо вам потрібно перетворити багато фізичних машин, які завантажуються із використанням PXE.

Точне місце того, де слід вказувати аргументи командного рядка, залежить від вашої реалізації PXE, але для pxelinux вам слід вказати їх у полі "APPEND" файла pxelinux.cfg. Приклад:

 DEFAULT p2v
 TIMEOUT 20
 PROMPT 0
 LABEL p2v
   KERNEL vmlinuz0
   APPEND initrd=initrd0.img [....] p2v.server=conv.example.com p2v.password=secret p2v.o=libvirt

Вам слід встановити деякі або усі такі аргументи командного рядка:

Назву або IP-адресу сервера перетворення.

Ці дані є завжди обов'язковими, якщо ви використовуєте спосіб із налаштовуванням ядра. Якщо virt-p2v не знайде цих даних у командному рядку ядра, програма автоматично перемкнеться на спосіб налаштовування за допомогою графічного інтерфейсу (інтерактивний спосіб).

Номер порту SSH на сервері перетворення (типове значення: 22).
Ім'я користувача SSH, яке буде використано для входу на сервер перетворення (типове значення: "root").
Пароль SSH, який буде використано для входу на сервер перетворення.

Типовою поведінкою буде спроба встановлення зв'язку без пароля. Якщо зв'язок встановити не вдасться, virt-p2v попросить користувача ввести пароль (ймовірно, декілька разів протягом перетворення).

This setting is ignored if "p2v.auth.identity.url" is present.

Вказує адресу файла профілю SSH (закритого ключа). Адресу буде оброблено за допомогою curl(1), тому тут можна вказати будь-яку адресу, підтримку якої передбачено у curl, зокрема "https://" та "file://". Щоб дізнатися більше про використання профілів SSH, ознайомтеся із розділом "ПРОФІЛІ SSH" нижче.

If "p2v.auth.identity.url" is present, it overrides "p2v.auth.password". There is no fallback.

Скористайтеся "p2v.sudo", щоб наказати virt-p2v використовувати sudo(8) для отримання прав доступу root на сервері перетворення після входу до системи від імені користувача, відмінного від root (типова поведінка: не використовувати sudo).
Назва гостьової системи, яку буде створено. Типовою поведінкою є встановлення назви на основі назви вузла фізичної машини (якщо це можливо). Якщо назву встановити не вдасться, буде використано назву, яку створено випадковим чином.
Кількість віртуальних процесорів, про які буде повідомлено гостьовій системі. Типово, ця кількість дорівнюватиме кількості фізичних процесорів у системі.
The size of the guest memory. You must specify the unit such as megabytes or gigabytes by using for example "p2v.memory=1024M" or "p2v.memory=1G".

Типово, буде використано той самий об'єм оперативної пам'яті, який є у фізичної машини.

The vCPU vendor, eg. "Intel" or "AMD". The default is to use the same CPU vendor as the physical machine.
The vCPU model, eg. "IvyBridge". The default is to use the same CPU model as the physical machine.
Number of vCPU sockets to use. The default is to use the same as the physical machine.
Number of vCPU cores to use. The default is to use the same as the physical machine.
Number of vCPU hyperthreads to use. The default is to use the same as the physical machine.
Whether to enable ACPI in the remote virtual machine. The default is to use the same as the physical machine.
Whether to enable APIC in the remote virtual machine. The default is to use the same as the physical machine.
Whether to enable PAE in the remote virtual machine. The default is to use the same as the physical machine.
Set the basis of the Real Time Clock in the virtual machine. The default is to try to detect this setting from the physical machine.
The offset of the Real Time Clock from UTC. The default is to try to detect this setting from the physical machine.
Список фізичних жорстких дисків для перетворення. Приклад:

 p2v.disks=sda,sdc
    

Типово, буде перетворено усі знайдені локальні жорсткі диски.

Список портативних носіїв даних, які слід включити до перетворення. Типовою поведінкою є створення віртуальних портативних пристроїв для усіх знайдених фізичних портативних пристроїв. Зауважте, що вміст портативних пристроїв ніколи не копіюватиметься до гостьової системи.
Список інтерфейсів мережі для перетворення. Типовою поведінкою є створення інтерфейсів мережі для усіх знайдених фізичних інтерфейсів мережі.
Керує тим, як інтерфейси мережі буде з'єднано із віртуальними мережами у гіпервізорі призначення. Типовою поведінкою є встановлення з'єднання на усіх інтерфейсах мережі із мережею "default" у гіпервізорі.

Вам слід вказати список пар "інтерфейс:призначення", відокремлених комами, і, необов'язково, типове призначення. Приклади:

 p2v.network=em1:ovirtmgmt
    

пов'язує інтерфейс "em1" із мережею призначення "ovirtmgmt".

 p2v.network=em1:ovirtmgmt,em2:management,other
    

пов'язує інтерфейс "em1" із "ovirtmgmt", а інтерфейс "em2" із "management"; усі інші знайдені інтерфейси буде пов'язано із "other".

Встановити режим для виведення даних. Те саме, що і параметр virt-v2v -o. Див. "ПАРАМЕТРИ" in virt-v2v(1).

Якщо не вказано, типовим значенням є "local", а перетворені гостьові системи буде записано до /var/tmp.

Встановити режим отримання пам'яті для виведення даних. Те саме, що і параметр virt-v2v -oa. Див. "ПАРАМЕТРИ" in virt-v2v(1).
Встановити для з'єднання виведення адресу libvirt. Те саме, Що параметр virt-v2v -oc. Див. "ПАРАМЕТРИ" in virt-v2v(1) та http://libvirt.org/uri.html
Встановити формат для виведення даних. Те саме, що і параметр virt-v2v -of. Див. "ПАРАМЕТРИ" in virt-v2v(1).
Встановити сховище даних для виведення. Те саме, що і параметр virt-v2v -os. Див. "ПАРАМЕТРИ" in virt-v2v(1).

Якщо не вказано, типово буде використано /var/tmp (на сервері перетворення).

Вибрати команду, яку буде виконано до перетворення. Тут можна вказати будь-яку команду або скрипт. Якщо у команді містяться пробіли, вам слід взяти усю команду у подвійні лапки. Типово, ніяка команда не виконуватиметься.
Визначити команду, яку буде виконано після успішного перетворення. Це може бути будь-яка команда або скрипт. Якщо у записі команди є пробіли, вам слід взяти усю команду у подвійні лапки.

Якщо virt-p2v запущено від імені користувача root, і командний рядок було встановлено з /proc/cmdline (не з --cmdline), типовою поведінкою буде запуск програми poweroff(8). У всіх інших випадках ніякої додаткової команди не виконуватиметься.

Вибрати команду, яку буде виконано після перетворення, якщо перетворення не вдасться виконати. Тут можна вказати будь-яку команду або скрипт. Якщо у команді містяться пробіли, вам слід взяти усю команду у подвійні лапки. Типово, ніяка команда не виконуватиметься.
Скористатися DHCP для налаштовування інтерфейсу мережі (типова поведінка).

ПРОФІЛІ SSH

Як дещо безпечнішу альтернативу розпізнаванню за допомогою пароля, ви можете використати для розпізнавання профіль SSH (закритий ключ).

Спочатку створіть пару ключів. Пароль до пари ключів має бути порожнім:

 ssh-keygen -t rsa -N '' -f id_rsa

Буде створено пару з закритого ключа ("id_rsa") та відкритого ключа ("id_rsa.pub").

Відкритий ключ слід дописати до файла "authorized_keys" на сервері перетворення virt-v2v (зазвичай, до файла "/root/.ssh/authorized_keys").

Для поширення закритого ключа можна скористатися одним з таких чотирьох сценаріїв (від менш безпечного до більш безпечного):

1.
Взагалі не використовувати профілі SSH, розпізнавати користувачів за паролями.

Будь-хто з тих, хто має доступ до параметрів завантаження PXE з мережі або може побачити пароль у якийсь інший спосіб, може увійти до сервера перетворення virt-v2v.

2.
Профіль SSH, вбудований до образу ISO або образу диска virt-p2v. У графічному інтерфейсі скористайтеся такими налаштуваннями:

 │            Пароль: [    <не заповнюйте>               ] │
 │                                                          │
 │  Адреса профілю SSH: [file:///var/tmp/id_rsa____________]

або командним рядком ядра:

 p2v.identity=file:///var/tmp/id_rsa
    

Закритий ключ SSH може бути отримано перехопленням пакетів у мережі, якщо використовується стандартний PXE.

3.
Профіль SSH, отриманий з сайта. У графічному інтерфейсі скористайтеся такими налаштуваннями:

 │            Пароль: [    <не заповнюйте>               ] │
 │                                                          │
 │  Адреса профілю SSH: [https://internal.example.com/id_rsa]

або командним рядком ядра:

 p2v.identity=https://internal.example.com/id_rsa
    

Знову ж таки, будь-хто може отримати закритий ключ і скористатися ним для входу до сервера перетворення virt-v2v, але ви можете подбати про надійніший захист, налаштувавши сервер так, щоб він встановлював з'єднання лише з машинами P2V.

Зауважте, що ssh-keygen(1) створює файл "id_rsa" (закритий ключ) із режимом доступу 0600. Якщо ви просто скопіюєте цей файл на сервер, сервер не зможе його обслуговувати. Він повідомлятиме про помилки «403 Forbidden». Вам слід змінити режим доступу до файла, щоб зробити його загальнодоступним для читання, наприклад, скориставшись такою командою:

 chmod 0644 id_rsa
    
4.
Профіль SSH, вбудований до образу ISO або образу диска virt-p2v (подібно до 2.) і використання безпечного PXE, PXE на основі окремої фізичної мережі або sneakernet для надсилання даних virt-p2v на фізичну машину.

У обох скриптах, virt-p2v-make-disk(1) і virt-p2v-make-kickstart(1), передбачено той самий параметр --inject-ssh-identity для вставляння закритого ключа до образу диска або образу ISO virt-p2v. Ознайомтеся із такими розділами підручника:

"ДОДАВАННЯ ПРОФІЛЮ SSH" in virt-p2v-make-disk(1)

"ДОДАВАННЯ ПРОФІЛЮ SSH" in virt-p2v-make-kickstart(1)

ТИПОВІ ПРОБЛЕМИ

Тайм-аути

Як це описано нижче (див. "ЯК ПРАЦЮЄ VIRT-P2V"), virt-p2v створює декілька довготривалих з'єднань ssh із сервером перетворення. Якщо час очікування на з'єднання у цих з'єднаннях буде перевищено, virt-p2v не зможе продовжувати роботу.

Щоб перевірити, чи не спричиняє час очікування (тайм-аут) проблеми, відкрийте термінал XTerm на машині з virt-p2v, відайте команду "ssh root@сервер перетворення" і почекайте на результати протягом принаймні години. Якщо з'єднання буде розірвано без вашого втручання, працює якийсь із інструментів контролю часу очікування, і ви маєте його вимкнути.

Причиною перевищення часу очікування може бути:

Змінна середовища "TIMEOUT" або "TMOUT"
Перевірте, чи не задано одну з цих змінних середовища у командній оболонці root на сервері перетворення.
Параметр sshd "ClientAlive*"
Пошукайте параметр "ClientAlive*" в "/etc/ssh/sshd_config" на сервері перетворення.
Параметри брандмауера або NAT
Перевірте, чи немає брандмауера або блоку NAT між virt-p2v та сервером перетворення і чи не розриває цей брандмауер з'єднання, якщо з'єднання буде бездіяльним протягом надто короткого періоду часу.

virt-p2v ≥ 1.36 намагається обійти проблеми із надто короткими значеннями часу очікування у брандмауері, надсилаючи повідомлення підтримання зв'язку кожні 5 хвилин.

ПАРАМЕТРИ

Показати довідкове повідомлення.
Використовується для діагностики. Замість обробки командного рядка ядра з /proc/cmdline, обробити рядковий параметр "CMDLINE".
Використовувати послідовності символів ANSI для розфарбовування повідомлень. Ці послідовності типово використовуються, якщо дані виводяться на термінал tty. Якщо дані, виведені програмою, спрямовуються до файла, послідовності визначення кольорів ANSI буде вимкнено, якщо ви не додасте до команди цей параметр.
This flag is passed to virt-p2v when it is launched inside the virt-p2v ISO environment, ie. when it is running on a real physical machine (and thus not when testing). It enables various dangerous features such as the Shutdown popup button.
Вибрати сервер NBD для використання. Типово, буде виконано спробу зв'язатися із такими серверами, і буде використано перший з працездатних серверів: --nbd=qemu-nbd,qemu-nbd-no-sa,nbdkit,nbdkit-no-sa
Використовувати qemu-nbd.
Використовувати qemu-nbd, але вимкнути активацію сокетів.
Використовувати nbdkit із додатком обробки файлів (див. nbdkit-file-plugin(1)).
Використовувати nbdkit, але вимкнути активацію сокетів.

Варіанти "*-no-sa" надають змогу virt-p2v повернутися до старіших версій qemu-nbd і nbdkit, у яких не передбачено підтримки активації за допомогою сокета.

З метою тестування або діагностики можна замінити /dev/sda на локальний файл. Має бути вказано абсолютний шлях до файла.
У libguestfs ≥ 1.33.41 діагностику завжди увімкнено на сервері перетворення, тому додавання цього прапорця нічого не змінює.
Показати дані щодо версії і завершити роботу.

ЯК ПРАЦЮЄ VIRT-P2V

Зауважте, що цей розділ не є нормативним. Ми можемо змінити принципи роботи virt-p2v будь-коли у майбутніх версіях.

Як описано вище, virt-p2v працює на фізичній машині, опитує користувача або обробляє командний рядок ядра для отримання параметрів налаштування, а потім встановлює одне або декілька з'єднань із сервером перетворення virt-v2v. З'єднання ssh є інтерактивними сеансами командної оболонки із віддаленим вузлом, але команди, які надсилаються, створюються лише самою програмою virt-p2v, а не користувачем. Для передавання даних virt-p2v використовуватиме можливість ssh зі зворотного переспрямовування даних портів (тобто "ssh -R").

Спочатку програма створить одне або декілька тестових з'єднань, які використовуватимуться для отримання даних щодо віддаленої версії virt-v2v та її можливостей. Тестові з'єднання буде розірвано до того, як буде розпочато перетворення.

 ┌──────────────┐                      ┌─────────────────┐
 │ virt-p2v     │                      │ virt-v2v        │
 │ (фізичний    │  керівне з’єднання   │ (сервер         │
 │  сервер)   ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶ перетворення) │
 └──────────────┘                      └─────────────────┘

Щойно virt-p2v буде готовим розпочати перетворення, програма відкриє одинарне керівне з'єднання ssh. Спочатку вона надішле команду mkdir для створення тимчасового каталогу на сервері перетворення. Назву каталогу буде вибрано випадковим чином і показано за допомогою графічного інтерфейсу. Формат назви буде таким:

 /tmp/virt-p2v-РРРРММДД-XXXXXXXX

де "РРРРММДД" — поточна дата, а «X» — випадкові символи.

До цього каталогу буде записано різноманітні файли, серед яких:

(до перетворення)

Виведені дані відповідних команд (тобто dmesg(1), lscpu(1) тощо) на фізичній машині.

Виведені dmesg дані корисні для виявлення проблем, зокрема нестачі драйверів пристроїв або мікропрограм на образі ISO virt-p2v. Дані інших програм корисні для діагностування проблем із новітніми конфігураціями обладнання.

(до перетворення)

Вміст середовища, у якому буде працювати virt-v2v(1).

(до перетворення)

Назва (зазвичай, назва вузла) фізичної машини.

(до перетворення)

XML libvirt, який описує фізичну машину. Використовується для передавання даних щодо фізичної початкової основної системи до virt-v2v(1) за допомогою параметра -i libvirtxml.

Зауважте, що це не «справжній» XML libvirt (його ніколи не слід завантажувати до libvirt, яка все одно його не сприйме). Крім того, він не збігається із XML libvirt, який створює virt-v2v у певних режимах виведення.

(до перетворення)

Версії virt-p2v і virt-v2v, відповідно.

(після перетворення)

Остаточний стан перетворення. 0, якщо перетворення виконано успішно. Ненульове значення, якщо під час перетворення сталися помилки.

(до перетворення)

Дата і час початку перетворення.

(під час/після перетворення)

Журнал перетворення. Це усього лише виведені програмою virt-v2v дані на сервері перетворення. Якщо спроба перетворення зазнає невдачі, вам слід ознайомитися із цим журналом. Крім того, вас можуть попросити надати повний, нередагований файл журналу у системі звітування щодо вад або у системі квитків підтримки.

(до перетворення)

Це скрипт-обгортка, який використовується для запуску virt-v2v. Лише для зацікавлених — не намагайтеся запускати цей скрипт власноруч.

Перш ніж розпочнеться саме перетворення, virt-p2v створить іще одне або декілька додаткових з'єднань ssh зі сервером для передавання даних.

У поточній версії протоколом для передавання даних є NBD (Network Block Device), дані пропускаються крізь ssh. Типовим сервером NBD є qemu-nbd(1), але можна вибрати інші сервери за допомогою параметра командного рядка --nbd.

Для кожного фізичного диска на початковій машині буде створено одне з'єднання ssh (поширений випадок, коли диск є єдиним, продемонстровано нижче):

 ┌──────────────┐                      ┌─────────────────┐
 │ virt-p2v     │                      │ virt-v2v        │
 │ (фізичний    │  керівне з’єднання   │ (сервер         │
 │  сервер)   ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶ перетворення) │
  │              │                      │                 │
 │              │  з'єднання для даних  │                 │
 │            ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶               │
 │qemu-nbd ← ─┘ │                      │└─ ← запити      │
 │/dev/sda      │                      │     NBD         │
 ∼              ∼                      ∼                 ∼
 └──────────────┘                      └─────────────────┘

Хоча з'єднання для передавання даних за допомогою ssh починається з фізичного сервера і завершується на сервері перетворення, фактично, потік запитів NBD рухається у протилежному напрямку. Так відбувається через те, що для відкриття порту на петльовому інтерфейсі сервера перетворення використовується можливість зворотного переспрямовування портів ssh ("ssh -R"). Дані пропускаються назад каналом ssh на сервер NBD, який запущено на фізичний машині. У результаті virt-v2v за допомогою libguestfs може відкривати з'єднання nbd, які безпосередньо читають дані з жорстких дисків фізичного сервера.

Для захисту жорстких дисків від запису використовується два шари. По-перше, використовується параметр qemu-nbd -r (лише читання). По-друге, libguestfs створює накладку над з'єднанням NBD, яка зберігає записані дані у тимчасовому файлі для файла перетворення.

Довга команда "virt-v2v -i libvirtxml physical.xml ..." загортається у скрипт і вивантажується на сервер перетворення. Кінцевим кроком є запуск цього скрипту-обгортки, який запустить програму virt-v2v. Програма virt-v2v використає дані з файла physical.xml (див. вище), який посилається на порти очікування даних NBD для встановлення з'єднань для обміну даними.

Дані, виведені програмою virt-v2v (повідомлення, діагностика тощо) зберігаються у файлі журналу на сервері перетворення. Лише інформаційні повідомлення надсилаються назад керівним з'єднанням для показу у графічному інтерфейсі.

ТАКОЖ ПЕРЕГЛЯНЬТЕ

virt-p2v-make-disk(1), virt-p2v-make-kickstart(1), virt-p2v-make-kiwi(1), virt-v2v(1), qemu-nbd(1), nbdkit(1), nbdkit-file-plugin(1), ssh(1), sshd(8), sshd_config(5), http://libguestfs.org/.

АВТОРИ

Matthew Booth

John Eckersberg

Richard W.M. Jones http://people.redhat.com/~rjones/

Mike Latimer

Pino Toscano

Tingting Zheng

АВТОРСЬКІ ПРАВА

Copyright (C) 2009-2019 Red Hat Inc.

LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

BUGS

To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

  • The version of libguestfs.
  • Where you got libguestfs (eg. which Linux distro, compiled from source, etc)
  • Describe the bug accurately and give a way to reproduce it.
  • Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.
2019-02-07 libguestfs-1.40.2